let jwt = require('jsonwebtoken')
const secret = 'hello_web20'

/**
 * JWT类，实际上是一个构造函数，可以创建JWT类型的对象，执行token生成和验证功能
 */
class JWT {
  /**
   * 签发token的函数
   * @date 2021-03-18
   * @param {any} data 载荷，可以是对象、字符串、数字...
   * @param {any} exp 过期时间如果是数字60，表示60秒后过期
   * @returns {any} 返回的是包含header+playload+exp的字符串===token
   */
  sign(data, expires) {
    try {
      return jwt.sign({ expires, data }, secret)
    } catch (error) {
      console.error('jwt error--------->', error)
      return ''
    }
  }
  /**
   * token的验证
   * @date 2021-03-18
   * @param {any} token 前端通过网路传输的令牌字符串
   * @returns {any} fasle表示没有token，对象要判断其过期时间
   */
  verify(token) {
    try {
      //返回对象，是字符串对应的原始对象信息
      return jwt.verify(token, secret)
    } catch (error) {
      console.error('jwt error--------->', error)
      return false
    }
  }
}

exports.JWT = JWT
